package com.ecube.maintenance.biz.apis;

import com.ecube.maintenance.biz.commons.ICCallBack;
import com.ecube.maintenance.pojos.OrderInfo;
import com.ecube.maintenance.pojos.ProductInfo;
import com.ecube.maintenance.pojos.SellerInfo;
import com.ecube.maintenance.pojos.UserInfo;

import java.util.List;

/**
 * Created by Trible Chen on 2014/9/8.
 */
public interface IOrderAction {
    /**
     *用户选中中意的产品（特价保养服务产品）后，在已
     登录的前提下，可以对保养进行预约。
     * @param info must have realName,mobile,carNO,carBrad,carFactory
     *             carSerial,carMode fields
     * @param sellerInfo 服务商
     * @param productInfo 服务商车系信息
     * @param arriveTime 到店时间
     * @param callBack
     */
    void submit(UserInfo info,SellerInfo sellerInfo, ProductInfo productInfo,String arriveTime,ICCallBack<OrderInfo> callBack);


    /**
     *根据用户 ID 获取用户最近或所有的历史订单
     * @param sid 服务端生成的唯一 id
     * @param dataType 说明：dataType 为数据类型，
     *                 当前有两个选项，dtLast 代表最近半年的单，
     *                 dtHistory 代表半年的订单
     * @param callBack
     */
    void fetchOrderList(String sid,String dataType,ICCallBack<List<OrderInfo>> callBack);

    /**
     *系统提交订单号来获取订单的详情，给用户了解订单
     所有的信息。
     * @param sid
     * @param orderNO 订单号
     * @param callBack
     */
    void fetchOrderDetails(String sid,String orderNO,ICCallBack<OrderInfo> callBack);

    /**
     *用户在订单未进入实质阶段（车辆未进店之前）可以
     取消。
     * @param sid
     * @param orderNO 订单号
     * @param callBack
     */
    void cancelOrder(String sid,String orderNO,ICCallBack<OrderInfo> callBack);
}
